Redis客户端之jedis的使用简介 您所在的位置:网站首页 jedis eval Redis客户端之jedis的使用简介

Redis客户端之jedis的使用简介

#Redis客户端之jedis的使用简介| 来源: 网络整理| 查看: 265

Redis客户端之jedis的使用简介

依赖两个jar包:

jedis-2.9.0.jar和commons-pool2-2.4.2.jar

1.Jedis简单使用/***@param host String*@param port int*/Jedis jedis = new Jedis("localhost", 6379);//初始化jedis.set("key", "value");//写入key-valueString value = jedis.get("key");//读取key-valueSystem.out.println("value:"+value);jedis.disconnect();jedis.close();

上述代码简单说明了利用jedis对redis实现简单的读写操作,当然redis支持多种数据类型的读写操作,后续会单独写一篇文章详细描述。 执行上面的代码即可输出value值,注意host和port的值要根据具体的redis配置进行设置,并且需要在最后释放资源,关闭连接,后面会涉及到redis连接池的概念,相应的为释放回收资源.

2.Jedis连接池的使用private static JedisPool jedisPool;public static JedisPool getPool(){ if(null == jedisPool) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(5); //设置一个pool中闲置(idle)的jedis实例个数 jedisPoolConfig.setMaxWaitMillis(2000);//设置最长等待时间(获取jedis实例的时间) jedisPoolConfig.setMaxTotal(100);//设置pool分配的jedis实例最大数量 jedisPoolConfig.setTestOnBorrow(true);//设置在获取jedis实例前进行可用性检查 jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379, 3000);//初始化pool } return jedisPool;}/** * 回收jedis实例 * @param jedisPool * @param jedis * @param isBroken true为异常情况,false为正常情况 */@SuppressWarnings("deprecation")public static void returnResource(JedisPool jedisPool, Jedis jedis, boolean isBroken){ if(null == jedis){ return; } if(isBroken){ jedisPool.returnResourceObject(jedis); }else{ jedisPool.returnResource(jedis); }}public static String get(String key){ JedisPool pool = null; Jedis jedis = null; boolean isBroken = false; try{ pool = getPool(); jedis = pool.getResource(); String value = jedis.get(key); return value; }catch(Exception e){ isBroken = true; e.printStackTrace(); }finally{ returnResource(pool, jedis, isBroken); } return null;}

需要注意的是在回收jedis实例时,如果出现异常情况,回收的方式会有所不同, @see returnResource(JedisPool jedisPool, Jedis jedis, boolean isBroken) 池化是目前比较普遍常规的操作,如果无限制的创建jedis实例或者在需要时才创建jedis实例,这样的做法是低效的,会存在一定的性能问题(视情况而定),像对线程的使用一般也是要进行池化操作的。

3.Jedis的分布式实现private static ShardedJedisPool shardedJedisPool;private static final String HOST_MASTER = "localhost"; //主机private static final int HOST_MASTER_PORT = 6379;//主机端口private static final String HOST_SLAVE = "192.168.193.37";//从机private static final int HOST_SLAVE_PORT = 6379;//从机端口public static ShardedJedisPool getShardedPool(){ if(null == jedisPool) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(5); //设置一个pool中闲置(idle)的jedis实例个数 jedisPoolConfig.setMaxWaitMillis(2000);//设置最长等待时间(获取jedis实例的时间) jedisPoolConfig.setMaxTotal(100);//设置pool分配的jedis实例最大数量 jedisPoolConfig.setTestOnBorrow(true);//设置在获取jedis实例前进行可用性检查 //存入redis服务器主机信息 List jedisInfoList = new ArrayList(); JedisShardInfo masterShardInfo = new JedisShardInfo(HOST_MASTER, HOST_MASTER_PORT); JedisShardInfo slaveShardInfo = new JedisShardInfo(HOST_SLAVE, HOST_SLAVE_PORT); jedisInfoList.add(masterShardInfo); jedisInfoList.add(slaveShardInfo); shardedJedisPool = new ShardedJedisPool(jedisPoolConfig, jedisInfoList,Hashing.MURMUR_HASH,Sharded.DEFAULT_KEY_TAG_PATTERN); } return shardedJedisPool;}

这里只简单说明分布式jedis连接池的初始化方式,get、set方式与普通的jedis无异,这里不再展开描述。当然,在实际开发过程中,有关redis服务器的相关配置一般是在properties文件中配置的,这里为简化操作,直接在代码中写明。在大规模的应用系统中,分布式的redis缓存是必不可少的,因此掌握redis的分布式实现也是很有必要的。同样,这一块后续也会有详细的文章作介绍。

4.Jedis的pipeline管道

管道的作用在于便于做数据批量操作。

5.Jedis的Pub/Sub发布/订阅模式未完,待续~~~


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有